TCP/IP is used as a protocol in Internet communication. Heretofore, the TCP/IP is implemented mainly by software processing and operated, for example, by a CPU of a personal computer, a built-in device, or the like.
Recently, however, the load of network processing is increased with the increase in the bandwidth of a network infrastructure and the increase in the bandwidth of video contents etc transmitted through networks, and performance in the processing performed by the CPU has become insufficient.
Therefore, there is proposed to utilize a TOE (TCP/IP Offload Engine) which performs TCP/IP processing in place of the CPU. By performing TCP/IP protocol processing with sub-processors or hardware modules included in the TOE, such processing can be performed at more higher speed.
For example, JP-2008-146486-A proposes a technique in which a TOE includes plural sub-processors which perform TCP(UDP)/IP processing in parallel. That is, the TOE has a sub-processor A which executes processing of a part of socket API, a sub-processor B which executes TCP(UDP) reception processing, a sub-processor C which executes TCP(UDP) transmission processing, a sub-processor D which executes an MAC driver and IP reception processing, a sub-processor E which executes the MAC driver and IP transmission processing, and these sub-processors perform processing in parallel.
However, JP-2008-146486-A does not mention a method for performing the TCP(UDP) transmission processing of the TCP/IP processing in parallel.
In the TCP(UDP) transmission processing of the TCP/IP processing, plural processes such as reading of connection information, writing of data of a packet, generation of a header and writing of updated connection information have to be performed. Previously, there is no proposal for executing some of these processes in parallel.